package Leetcode.ArrayAndLinkedList.moveZeroes283;

/**
 * 该方法借助国际站的一个方法
 * 即交换法   对于10003这种情况下 如何做到3和第一个0交换而不是最后一个0
 * 即用一个偏移量zeroLength表示0的长度 每次替换的位置为i-zeroLength
 */

public class Solution3 {

    public void moveZeroes(int[] nums) {
        int zeroLength = 0;
        for (int i = 0; i < nums.length; ++i) {
            if (nums[i] == 0) {
                zeroLength++;
            }
            if (nums[i] != 0) {
                int t = nums[i];
                nums[i] = 0;
                nums[i - zeroLength] = t;
            }
        }


//        for (int i = 0; i < nums.length; ++i) {
//            System.out.print(nums[i]);
//        }
    }

//    public static void main(String[] args) {
//        int[] num = {0, 1, 0, 3, 0, 0, 0, 1, 2};
//        new Solution3().moveZeroes(num);
//    }
}
